package com.example.work;

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Show extends AppCompatActivity {

    // 界面组件
    private Button btnSave;
    private Button btnCancel;
    private TextView showTime;
    private EditText showContent;
    private EditText showTitle;

    // 用于存储传入的值
    private Values value;
    // 数据库服务类
    DBService myDb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show); // 设置布局文件

        init(); // 初始化界面和数据
    }

    public void init() {
        // 初始化数据库服务类
        myDb = new DBService(this);

        // 通过findViewById获取界面组件
        btnCancel = findViewById(R.id.show_cancel);
        btnSave = findViewById(R.id.show_save);
        showTime = findViewById(R.id.show_time);
        showTitle = findViewById(R.id.show_title);
        showContent = findViewById(R.id.show_content);

        // 获取传入的Intent
        Intent intent = this.getIntent();
        if (intent != null) {
            // 实例化Values对象
            value = new Values();

            // 从Intent中获取数据并赋值给Values对象
            value.setTime(intent.getStringExtra(DBService.TIME));
            value.setTitle(intent.getStringExtra(DBService.TITLE));
            value.setContent(intent.getStringExtra(DBService.CONTENT));
            value.setId(Integer.valueOf(intent.getStringExtra(DBService.ID)));

            // 将数据展示在界面上
            showTime.setText(value.getTime());
            showTitle.setText(value.getTitle());
            showContent.setText(value.getContent());
        }

        // 设置保存按钮的点击事件
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取可写的数据库实例
                SQLiteDatabase db = myDb.getWritableDatabase();
                // 创建ContentValues对象用于存储要更新的数据
                ContentValues values = new ContentValues();
                String content = showContent.getText().toString();
                String title = showTitle.getText().toString();

                // 设置更新的数据
                values.put(DBService.TIME, getTime());
                values.put(DBService.TITLE, title);
                values.put(DBService.CONTENT, content);

                // 更新数据库中的记录
                db.update(DBService.TABLE, values, DBService.ID + "=?", new String[]{value.getId().toString()});
                // 显示更新成功的提示
                Toast.makeText(Show.this, "修改成功", Toast.LENGTH_LONG).show();
                db.close();

                // 跳转到Diary活动
                Intent intent = new Intent(Show.this, Diary.class);
                startActivity(intent);
            }
        });

        // 设置取消按钮的点击事件
        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取当前EditText中的内容
                final String content = showContent.getText().toString();
                final String title = showTitle.getText().toString();

                // 弹出对话框询问用户是否保存当前内容
                new AlertDialog.Builder(Show.this)
                        .setTitle("提示框")
                        .setMessage("是否保存当前内容?")
                        .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // 如果用户选择保存，则更新数据库并跳转到Diary活动
                                SQLiteDatabase db = myDb.getWritableDatabase();
                                ContentValues values = new ContentValues();
                                values.put(DBService.TIME, getTime());
                                values.put(DBService.TITLE, title);
                                values.put(DBService.CONTENT, content);
                                db.update(DBService.TABLE, values, DBService.ID + "=?", new String[]{value.getId().toString()});
                                Toast.makeText(Show.this, "修改成功", Toast.LENGTH_LONG).show();
                                db.close();
                                Intent intent = new Intent(Show.this, Diary.class);
                                startActivity(intent);
                            }
                        })
                        .setNegativeButton("no", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // 如果用户选择不保存，则直接跳转到Diary活动
                                Intent intent = new Intent(Show.this, Diary.class);
                                startActivity(intent);
                            }
                        }).show();
            }
        });
    }

    // 获取当前时间的辅助方法
    String getTime() {
        @SuppressLint("SimpleDateFormat")
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
        // 获取当前时间
        Date date = new Date(System.currentTimeMillis());
        return simpleDateFormat.format(date);
    }
}